package com.cr.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.cr.model.DiyOrder;
import com.cr.util.DBUtil;

/**
 * @author Administrator
 *
 */
public class DiyOrderDao {
	private DBUtil db=new DBUtil();
	
	/**
	 * @param id
	 * @return
	 */
	public DiyOrder getDiyOrder(long id)
	{
		DiyOrder diyOrder=null;
		
		String sql="select * from diyorder where Id=?";
		Object[] args={id};
		ResultSet rs=db.preQuery(sql, args);
		
		if(rs!=null)
		{
			try {
				if(rs.next())
				{
					diyOrder=new DiyOrder();
					
					diyOrder.setCode(rs.getString("Code"));
					diyOrder.setCustomerId(rs.getLong("CustomerId"));
					diyOrder.setDescription(rs.getString("Description"));
					diyOrder.setId(id);
					diyOrder.setOrderDate(rs.getString("OrderDate"));
					diyOrder.setPayMethod(rs.getString("PayMethod"));
					diyOrder.setReadyDate(rs.getString("ReadyDate"));
					diyOrder.setRecvAddr(rs.getString("RecvAddr"));
					diyOrder.setRemark(rs.getString("Remark"));
					diyOrder.setRentDays(rs.getInt("RentDays"));
					diyOrder.setRecvEmail(rs.getString("RecvEmail"));
					diyOrder.setRecvName(rs.getString("RecvName"));
					diyOrder.setRecvPhone(rs.getString("RecvPhone"));
					diyOrder.setRecvProvince(rs.getString("RecvProvince"));
					diyOrder.setPostCode(rs.getString("PostCode"));
					diyOrder.setPostCost(rs.getInt("PostCost"));
					diyOrder.setPostMethod(rs.getString("PostMethod"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return diyOrder;
	}
	/**
	 * @param id
	 * @return
	 */
	public DiyOrder getDiyOrder(String code)
	{
		DiyOrder diyOrder=null;
		
		String sql="select * from diyorder where Code=?";
		Object[] args={code};
		ResultSet rs=db.preQuery(sql, args);
		
		if(rs!=null)
		{
			try {
				if(rs.next())
				{
					diyOrder=new DiyOrder();
					
					diyOrder.setCode(code);
					diyOrder.setCustomerId(rs.getLong("CustomerId"));
					diyOrder.setDescription(rs.getString("Description"));
					diyOrder.setId(rs.getLong("Id"));
					diyOrder.setOrderDate(rs.getString("OrderDate"));
					diyOrder.setPayMethod(rs.getString("PayMethod"));
					diyOrder.setReadyDate(rs.getString("ReadyDate"));
					diyOrder.setRecvAddr(rs.getString("RecvAddr"));
					diyOrder.setRemark(rs.getString("Remark"));
					diyOrder.setRentDays(rs.getInt("RentDays"));
					diyOrder.setRecvEmail(rs.getString("RecvEmail"));
					diyOrder.setRecvName(rs.getString("RecvName"));
					diyOrder.setRecvPhone(rs.getString("RecvPhone"));
					diyOrder.setRecvProvince(rs.getString("RecvProvince"));
					diyOrder.setPostCode(rs.getString("PostCode"));
					diyOrder.setPostCost(rs.getInt("PostCost"));
					diyOrder.setPostMethod(rs.getString("PostMethod"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return diyOrder;
	}
	/**
	 * @param diyOrder
	 * @return
	 */
	public boolean addDiyOrder(DiyOrder diyOrder)
	{
		boolean flag=false;
		String sql="insert into diyOrder(Code,CustomerId,Description,OrderDate,PayMethod,ReadyDate,RecvAddr,Remark,RentDays,RecvName,RecvProvince,RecvPhone,RecvEmail,PostCode,PostMethod,PostCost) ";
		sql+=" values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		
		Object[] args={diyOrder.getCode(),
				diyOrder.getCustomerId(),
				diyOrder.getDescription(),
				diyOrder.getOrderDate(),
				diyOrder.getPayMethod(),
				diyOrder.getReadyDate(),
				diyOrder.getRecvAddr(),
				diyOrder.getRemark(),
				diyOrder.getRentDays(),
				diyOrder.getRecvName(),
				diyOrder.getRecvProvince(),
				diyOrder.getRecvPhone(),
				diyOrder.getRecvEmail(),
				diyOrder.getPostCode(),
				diyOrder.getPostMethod(),
				diyOrder.getPostCost()};
		
		int count=db.preExecute(sql, args);
		
		flag=count>0;
		
		return flag;
	}
	/**
	 * @param diyOrder
	 * @return
	 */
	public boolean updateDiyOrder(DiyOrder diyOrder)
	{
		boolean flag=false;
		String sql="update diyOrder set ";
		sql+=" Code=?,";
		sql+=" CustomerId=?,";
		sql+=" Description=?,";
		sql+=" OrderDate=?,";
		sql+=" PayMethod=?,";
		sql+=" ReadyDate=?,";
		sql+=" RecvAddr=?,";
		sql+=" Remark=?,";
		sql+=" RentDays=?,";
		sql+=" RecvName=?,";
		sql+=" RecvProvince=?,";
		sql+=" RecvPhone=?,";
		sql+=" RecvEmail=?,";
		sql+=" PostCode=?,";
		sql+=" PostMethod=?,";
		sql+=" PostCost=?";
		sql+=" where Id=?";
		
		Object[] args={diyOrder.getCode(),
				diyOrder.getCustomerId(),
				diyOrder.getDescription(),
				diyOrder.getOrderDate(),
				diyOrder.getPayMethod(),
				diyOrder.getReadyDate(),
				diyOrder.getRecvAddr(),
				diyOrder.getRemark(),
				diyOrder.getRentDays(),
				diyOrder.getRecvName(),
				diyOrder.getRecvProvince(),
				diyOrder.getRecvPhone(),
				diyOrder.getRecvEmail(),
				diyOrder.getPostCode(),
				diyOrder.getPostMethod(),
				diyOrder.getPostCost(),
				diyOrder.getId()};
		
		int count=db.preExecute(sql, args);
		
		flag=count>0;
		
		return flag;
	}
	/**
	 * @param id
	 * @return
	 */
	public boolean deleteDiyOrder(long id)
	{
		boolean flag=false;
		String sql="delete from diyOrder where Id=?";
		
		Object[] args={id};
		
		int count=db.preExecute(sql, args);
		
		flag=count>0;
		
		return flag;
	}
	
	/**
	 * @param start
	 * @param limit
	 * @param condition
	 * @return
	 */
	public List<DiyOrder> getOrders(int start,int limit,String condition)
	{
		List<DiyOrder> list=null;
		String sql="select * from diyorder";
		if(!condition.equals(""))
		{
			sql+=" where "+condition;
		}
		
		sql+=" order by OrderDate desc ";
		sql+=" limit ?,?";
		
		Object[] args={start,limit};
		ResultSet rs=db.preQuery(sql, args);
		
		if(rs!=null)
		{
			list=new ArrayList<DiyOrder>();
			try {
				while(rs.next())
				{
					DiyOrder diyOrder=new DiyOrder();
					diyOrder.setCode(rs.getString("Code"));
					diyOrder.setCustomerId(rs.getLong("CustomerId"));
					diyOrder.setId(rs.getLong("Id"));
					diyOrder.setOrderDate(rs.getString("OrderDate"));
					diyOrder.setPayMethod(rs.getString("PayMethod"));
					diyOrder.setReadyDate(rs.getString("ReadyDate"));
					diyOrder.setRecvAddr(rs.getString("RecvAddr"));
					diyOrder.setRemark(rs.getString("Remark"));
					diyOrder.setRentDays(rs.getInt("RentDays"));
					diyOrder.setRecvEmail(rs.getString("RecvEmail"));
					diyOrder.setRecvName(rs.getString("RecvName"));
					diyOrder.setRecvPhone(rs.getString("RecvPhone"));
					diyOrder.setRecvProvince(rs.getString("RecvProvince"));
					diyOrder.setPostCode(rs.getString("PostCode"));
					diyOrder.setPostCost(rs.getInt("PostCost"));
					diyOrder.setPostMethod(rs.getString("PostMethod"));
					diyOrder.setDescription(rs.getString("Description"));
					list.add(diyOrder);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return list;
	}

	/**
	 * @param condition
	 * @return
	 */
	public int getCount(String condition)
	{
		int count=0;
		String sql="select count(*) from diyorder";
		if(!condition.equals(""))
		{
			sql+=" where "+condition;
		}
		
		ResultSet rs=db.preQuery(sql, null);
		if(rs!=null)
		{
			try {
				if(rs.next())
				{
					count=rs.getInt(1);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return count;
	}
}
